package com.sr.service;

import com.sr.ibase.IBaseService;
import com.sr.pojo.SysPermission;
import com.sr.vo.req.PermissionRespNodeTreeVo;
import com.sr.vo.resp.PermissionRespNodeVo;

import java.util.List;

/**
 * @author xiaochi
 * @date 2022/5/2 21:06
 * @desc IPermissionService
 */
public interface IPermissionService extends IBaseService<SysPermission> {

    /**
     * 根据用户id查询资源
     * @param userId
     * @return
     */
    List<SysPermission> permissionListByUserId(String userId);

    /**
     * 递归筛选权限菜单
     * @param sysPermissions
     * @return
     */
    List<PermissionRespNodeVo> permissionTreeListMenuFilter(List<SysPermission> sysPermissions);

    /**
     * 获取所有权限（包括按钮），角色添加/编辑/分配权限时用到的结结构数据
     * @return
     */
    List<PermissionRespNodeVo> selectAllTree();

    /**
     * 查询所有权限列表（树形表格结果数据展示），表格列表时展示
     * 树形表格结果数据组装
     * @return
     */
    List<SysPermission> selectAllList();

    /**
     * 添加/编辑权限的上级选择权限树结构展示（递归），不需要展示到按钮
     * @return
     */
    List<PermissionRespNodeTreeVo> selectAllMenuByTree();

    /**
     * 新增权限
     * @param sysPermission
     * @return
     */
    int addPermission(SysPermission sysPermission);

    /**
     * 更新权限
     * @param sysPermission
     * @return
     */
    int updatePermission(SysPermission sysPermission);

    /**
     * 删除权限
     * @param permissionId
     * @return
     */
    int deletedPermission(String permissionId);
}
